package org.gap.web.jsf;

import java.util.List;

import org.gap.dao.AdressesDAO;
import org.gap.dao.CodesPostauxDAO;
import org.gap.dao.UtilisateursDAO;

import org.gap.domain.Adresses;
import org.gap.domain.CodesPostaux;
import org.gap.domain.Utilisateurs;

import org.gap.service.AdressesService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Component;

import org.springframework.transaction.annotation.Transactional;

/**
 * Spring Component that handles CRUD requests for Adresses entities
 * 
 */
@Scope("session")
@Component("AdressesComponent")
public class AdressesComponentImpl implements AdressesComponent {

	/**
	 * Data type variable that provides CRUD operations for Adresses entities
	 * 
	 */
	private Adresses adresses;

	/**
	 * DAO injected by Spring that manages Utilisateurs entities
	 * 
	 */
	private Utilisateurs utilisateursbyaddusermodification;

	/**
	 * DAO injected by Spring that manages Utilisateurs entities
	 * 
	 */
	private Utilisateurs utilisateursbyaddusercreation;

	/**
	 * DAO injected by Spring that manages CodesPostaux entities
	 * 
	 */
	private CodesPostaux codespostaux;

	/**
	 * DAO injected by Spring that manages Adresses entities
	 * 
	 */
	@Autowired
	private AdressesDAO adressesDAO;

	/**
	 * DAO injected by Spring that manages CodesPostaux entities
	 * 
	 */
	@Autowired
	private CodesPostauxDAO codesPostauxDAO;

	/**
	 * DAO injected by Spring that manages Utilisateurs entities
	 * 
	 */
	@Autowired
	private UtilisateursDAO utilisateursDAO;

	/**
	 * Service injected by Spring that provides CRUD operations for Adresses entities
	 * 
	 */
	@Autowired
	private AdressesService adressesService;

	/** 
	 */
	public AdressesComponentImpl() {
	}

	/**
	 * Save an existing CodesPostaux entity
	 * 
	 */
	@Transactional
	public String saveAdressesCodesPostaux(Integer adresses_addAdresse, CodesPostaux codespostaux) {
		adresses = adressesService.saveAdressesCodesPostaux(adresses_addAdresse, codespostaux);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * View an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String selectAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse, String related_utilisateursbyaddusercreation_usrUser) {
		utilisateursbyaddusercreation = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusercreation_usrUser, -1, -1);
		return "/jsf/adresses/utilisateursbyaddusercreation/viewUtilisateursByAddUserCreation.xhtml";
	}

	/**
	 * Select the child CodesPostaux entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteAdressesCodesPostaux(Integer adresses_addAdresse, String related_codespostaux_cdpPays, String related_codespostaux_cdpCodePostal, String related_codespostaux_cdpNInsee, String related_codespostaux_cdpLocalite) {
		codespostaux = codesPostauxDAO.findCodesPostauxByPrimaryKey(related_codespostaux_cdpPays, related_codespostaux_cdpCodePostal, related_codespostaux_cdpNInsee, related_codespostaux_cdpLocalite);

		return "/jsf/adresses/codespostaux/deleteCodesPostaux.xhtml";
	}

	/**
	 * Getter for variable Adresses
	 * 
	 */
	@Transactional
	public Utilisateurs getUtilisateursbyaddusercreation() {
		return utilisateursbyaddusercreation;
	}

	/**
	 * Save an existing Adresses entity
	 * 
	 */
	@Transactional
	public String saveAdresses(Adresses adresses) {
		adressesService.saveAdresses(adresses);
		return "/jsf/adresses/listAdressess.xhtml";
	}

	/**
	 * Get Utilisateurs entity by Adresses
	 * 
	 */
	@Transactional
	public Utilisateurs getAdressesUtilisateursByAddUserModification(Integer addAdresseKey) {
		return adressesDAO.findAdressesByPrimaryKey(addAdresseKey).getUtilisateursByAddUserModification();
	}

	/**
	 * Select an existing Adresses entity
	 * 
	 */
	@Transactional
	public String selectAdresses(Integer addAdresseKey) {
		adresses = adressesDAO.findAdressesByPrimaryKey(addAdresseKey);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * View an existing CodesPostaux entity
	 * 
	 */
	@Transactional
	public String selectAdressesCodesPostaux(Integer adresses_addAdresse, String related_codespostaux_cdpPays, String related_codespostaux_cdpCodePostal, String related_codespostaux_cdpNInsee, String related_codespostaux_cdpLocalite) {
		codespostaux = codesPostauxDAO.findCodesPostauxByPrimaryKey(related_codespostaux_cdpPays, related_codespostaux_cdpCodePostal, related_codespostaux_cdpNInsee, related_codespostaux_cdpLocalite, -1, -1);
		return "/jsf/adresses/codespostaux/viewCodesPostaux.xhtml";
	}

	/**
	 * Delete an existing CodesPostaux entity
	 * 
	 */
	@Transactional
	public String deleteAdressesCodesPostaux(Integer adresses_addAdresse, String related_codespostaux_cdpPays, String related_codespostaux_cdpCodePostal, String related_codespostaux_cdpNInsee, String related_codespostaux_cdpLocalite) {
		adresses = adressesService.deleteAdressesCodesPostaux(adresses_addAdresse, related_codespostaux_cdpPays, related_codespostaux_cdpCodePostal, related_codespostaux_cdpNInsee, related_codespostaux_cdpLocalite);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * Create a new Utilisateurs entity
	 * 
	 */
	@Transactional
	public String newAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse) {
		utilisateursbyaddusermodification = new Utilisateurs();

		return "/jsf/adresses/utilisateursbyaddusermodification/createUtilisateursByAddUserModification.xhtml";
	}

	/**
	 * View an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String selectAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse, String related_utilisateursbyaddusermodification_usrUser) {
		utilisateursbyaddusermodification = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusermodification_usrUser, -1, -1);
		return "/jsf/adresses/utilisateursbyaddusermodification/viewUtilisateursByAddUserModification.xhtml";
	}

	/**
	 * Delete an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String deleteAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse, String related_utilisateursbyaddusercreation_usrUser) {
		adresses = adressesService.deleteAdressesUtilisateursByAddUserCreation(adresses_addAdresse, related_utilisateursbyaddusercreation_usrUser);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * Delete an existing Adresses entity
	 * 
	 */
	@Transactional
	public String deleteAdresses(Integer addAdresseKey) {
		Adresses adresses = adressesDAO.findAdressesByPrimaryKey(addAdresseKey);
		adressesService.deleteAdresses(adresses);
		return "/jsf/adresses/listAdressess.xhtml";
	}

	/**
	 * Edit an existing Adresses entity
	 * 
	 */
	@Transactional
	public String editAdresses(Integer addAdresseKey) {
		adresses = adressesDAO.findAdressesByPrimaryKey(addAdresseKey);

		return "/jsf/adresses/editAdresses.xhtml";
	}

	/**
	 * Create a new Utilisateurs entity
	 * 
	 */
	@Transactional
	public String newAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse) {
		utilisateursbyaddusercreation = new Utilisateurs();

		return "/jsf/adresses/utilisateursbyaddusercreation/createUtilisateursByAddUserCreation.xhtml";
	}

	/**
	 * Getter for variable Adresses
	 * 
	 */
	@Transactional
	public CodesPostaux getCodespostaux() {
		return codespostaux;
	}

	/**
	 * Delete an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String deleteAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse, String related_utilisateursbyaddusermodification_usrUser) {
		adresses = adressesService.deleteAdressesUtilisateursByAddUserModification(adresses_addAdresse, related_utilisateursbyaddusermodification_usrUser);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * Save an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String saveAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse, Utilisateurs utilisateurs) {
		adresses = adressesService.saveAdressesUtilisateursByAddUserCreation(adresses_addAdresse, utilisateurs);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * Get Utilisateurs entity by Adresses
	 * 
	 */
	@Transactional
	public Utilisateurs getAdressesUtilisateursByAddUserCreation(Integer addAdresseKey) {
		return adressesDAO.findAdressesByPrimaryKey(addAdresseKey).getUtilisateursByAddUserCreation();
	}

	/**
	 * Create a new CodesPostaux entity
	 * 
	 */
	@Transactional
	public String newAdressesCodesPostaux(Integer adresses_addAdresse) {
		codespostaux = new CodesPostaux();

		return "/jsf/adresses/codespostaux/createCodesPostaux.xhtml";
	}

	/**
	 * Edit an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String editAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse, String related_utilisateursbyaddusermodification_usrUser) {
		utilisateursbyaddusermodification = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusermodification_usrUser, -1, -1);
		return "/jsf/adresses/utilisateursbyaddusermodification/editUtilisateursByAddUserModification.xhtml";
	}

	/**
	 * Save an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String saveAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse, Utilisateurs utilisateurs) {
		adresses = adressesService.saveAdressesUtilisateursByAddUserModification(adresses_addAdresse, utilisateurs);

		return "/jsf/adresses/viewAdresses.xhtml";
	}

	/**
	 * Edit an existing Utilisateurs entity
	 * 
	 */
	@Transactional
	public String editAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse, String related_utilisateursbyaddusercreation_usrUser) {
		utilisateursbyaddusercreation = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusercreation_usrUser, -1, -1);
		return "/jsf/adresses/utilisateursbyaddusercreation/editUtilisateursByAddUserCreation.xhtml";
	}

	/**
	 * Show all Adresses entities
	 * 
	 */
	@Transactional
	public List<Adresses> listAdressess() {
		return new java.util.ArrayList<Adresses>(adressesService.loadAdressess());
	}

	/**
	 * Select the child Utilisateurs entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteAdressesUtilisateursByAddUserModification(Integer adresses_addAdresse, String related_utilisateursbyaddusermodification_usrUser) {
		utilisateursbyaddusermodification = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusermodification_usrUser);

		return "/jsf/adresses/utilisateursbyaddusermodification/deleteUtilisateursByAddUserModification.xhtml";
	}

	/**
	 * Get CodesPostaux entity by Adresses
	 * 
	 */
	@Transactional
	public CodesPostaux getAdressesCodesPostaux(Integer addAdresseKey) {
		return adressesDAO.findAdressesByPrimaryKey(addAdresseKey).getCodesPostaux();
	}

	/**
	 * Getter for variable Adresses
	 * 
	 */
	@Transactional
	public Utilisateurs getUtilisateursbyaddusermodification() {
		return utilisateursbyaddusermodification;
	}

	/**
	 * Select the child Utilisateurs entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteAdressesUtilisateursByAddUserCreation(Integer adresses_addAdresse, String related_utilisateursbyaddusercreation_usrUser) {
		utilisateursbyaddusercreation = utilisateursDAO.findUtilisateursByPrimaryKey(related_utilisateursbyaddusercreation_usrUser);

		return "/jsf/adresses/utilisateursbyaddusercreation/deleteUtilisateursByAddUserCreation.xhtml";
	}

	/**
	 * Select the Adresses entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteAdresses(Integer addAdresseKey) {
		adresses = adressesDAO.findAdressesByPrimaryKey(addAdresseKey);

		return "/jsf/adresses/deleteAdresses.xhtml";
	}

	/**
	 * Edit an existing CodesPostaux entity
	 * 
	 */
	@Transactional
	public String editAdressesCodesPostaux(Integer adresses_addAdresse, String related_codespostaux_cdpPays, String related_codespostaux_cdpCodePostal, String related_codespostaux_cdpNInsee, String related_codespostaux_cdpLocalite) {
		codespostaux = codesPostauxDAO.findCodesPostauxByPrimaryKey(related_codespostaux_cdpPays, related_codespostaux_cdpCodePostal, related_codespostaux_cdpNInsee, related_codespostaux_cdpLocalite, -1, -1);
		return "/jsf/adresses/codespostaux/editCodesPostaux.xhtml";
	}

	/**
	 * Create a new Adresses entity
	 * 
	 */
	@Transactional
	public String newAdresses() {
		adresses = new Adresses();

		return "/jsf/adresses/createAdresses.xhtml";
	}

	/**
	 * Getter for variable Adresses
	 * 
	 */
	@Transactional
	public Adresses getAdresses() {
		return adresses;
	}

}
